/**
 * 生成各类业务单号的工具函数
 * 格式：前缀+日期+随机数（纯数字）
 * 例如：9520250709XXXX（调价单号）
 */
import { formatDateTime } from './dayjs'

/**
 * 生成单号
 * @param {number} prefix - 单号前缀数字，如 95（调价）, 86（入库）等
 * @param {number} randomDigits - 随机数位数，默认4位
 * @param {string} dateFormat - 日期格式，默认YYYYMMDD
 * @returns {string} 生成的单号
 */
export const generateOrderNo = (prefix = 95, randomDigits = 4, dateFormat = 'YYYYMMDD') => {
  // 获取当前日期部分
  const datePart = formatDateTime(new Date(), dateFormat)

  // 生成指定位数的随机数，不足位数前面补0
  const randomPart = Math.floor(Math.random() * Math.pow(10, randomDigits))
    .toString()
    .padStart(randomDigits, '0')

  // 组合成最终的纯数字单号
  return `${prefix}${datePart}${randomPart}`
}

/**
 * 生成调价单号
 * 格式：95YYYYMMDDXXXX（95开头，纯数字）
 * @returns {string} 生成的调价单号
 */
export const generatePriceOrderNo = () => {
  return generateOrderNo(95)
}

/**
 * 生成入库单号
 * 格式：86YYYYMMDDXXXX（86开头，纯数字）
 * @returns {string} 生成的入库单号
 */
export const generateStoreOrderNo = () => {
  return generateOrderNo(86)
}

/**
 * 生成上架单号
 * 格式：78YYYYMMDDXXXX（78开头，纯数字）
 * @returns {string} 生成的上架单号
 */
export const generateSalesOrderNo = () => {
  return generateOrderNo(78)
}

/**
 * 生成下架单号
 * 格式：77YYYYMMDDXXXX（77开头，纯数字）
 * @returns {string} 生成的下架单号
 */
export const generateRemovalOrderNo = () => {
  return generateOrderNo(77)
}
